Флаги не меняются.
Команда:
RET optional-pop-value
Логика:
POP IP if FAR RETURN (внешний сегмент) POP CS SP = SP + optional-pop-value (если оно имеется)
Команда RET передает управление из вызванной подпрограммы команде, следовавшей непосредственно за CALL, и делает это следующим образом :
- пересылает слово из верхушки стека в IP;
- если возврат осуществляется во внешний сегмент, то пересылает слово из новой верхушки стека в CS;
- увеличивает SP на значение операнда optional-pop-value, если оно задано.
Ассемблер сгенерирует возврат во внутренний сегмент, если подпрограмма, содержащая RET, будет обозначена программистом как NEAR, и возврат во внешний сегмент, - если как FAR. Операнд optional-pop-value определяет значение, которое надо прибавить к SP, что имеет смысл "освобождения" стека от "лишних" байтов (например, от входных параметров, когда они передаются подпрограмме через стек).
Операнды | Такт байты (слова) | Обращения | Байты | Пример |
(внутр.сегм.,без pop) | 20 | 1 | 1 | RET |
(внутр.сегм., с pop) | 24 | 1 | 3 | RET 4 |
(внешн.сегм.,без pop) | 32 | 2 | 1 | RET |
(внешн.сегм., с pop) | 31 | 2 | 3 | RET 2 |